Computer networks, to which this invention applies, are systems comprising a number of components such as printers, computers, routers and the like, that are connected to enable communication among the components and sharing of data and resources. For example, a computer network system may include a server that provides shared resources to network users, one or more clients that access shared network resources provided by the server, a physical medium that connects the network computers, and shared data and resources. In order for a computer network system to operate efficiently, a system administrator must constantly monitor and manage each network component. The system administrator generally manages the network by performing the following management tasks: user administration for creating, maintaining and securing user accounts; resource management for implementing and supporting network resources; configuration management for planning, expanding, and maintaining configuration; performance management for monitoring and tracking network activity to maintain and enhance the network's performance; and network maintenance for preventing, detecting and solving network problems. To perform these management tasks effectively, the system administrator must receive timely and accurate information about the state of each network component.
Therefore, the states of network components are constantly monitored by software applications known as "producers". Producers generate error messages or alarm messages when they detect anomalies, i.e. any condition that is not expected. Examples of producers include a router that generates a "trap", i.e. an error message, whenever it detects an anomaly in a network device and a poller which is a software application that polls the network for data and generates an error or informational message whenever an anomaly is found. Messages from the producers are transmitted to a distributor for further transmission to the appropriate network client or consumer. The distributor is a software application that queues incoming messages from producers and transmits each message to the consumers that request that message. Consumers are software applications that display to the system administrator errors or alarms generated by the producers and they may also perform various functions for correcting the reported anomaly. An example of a consumer is a desktop application that displays a network map displaying the location of each anomaly. Each consumer may be dedicated to reporting and correcting specific network anomalies. Thus when the distributor distributes a message from the producer, it sends the message to only those consumers that requested messages of those anomalies.
After the network starts up, each consumer in the network registers with the distributor. The registration information from each consumer includes filtering expressions that are stored in the distributor's registration list; the filtering expressions are used by the distributor to determine which consumer(s) requested the incoming message for each message type. The filtering expressions are dynamic and may be changed by the system administrator or they may be changed when the consumer detects certain error and/or anamoly conditions. Currently, the filtering expressions are Boolean statements and/or SQL (query) statements which are evaluated by the distributor every time the distributor receives an incoming message. Upon evaluating a message, if a filtering expression is true, the distributor sends the message to the consumer associated with that filtering expression.
Although simple filtering expressions using Boolean or SQL statements are easy to develop, complex filtering expressions using these statements are more difficult to develop. An example of a complex filtering expression is one where the consumer requests only a sampling of error messages from a specific device. Moreover, the SQL and Boolean expressions must be translated into the programming language of the distributor each time they are evaluated, i.e. whenever a new message is received from a producer. Each translation consumes processing time and hinders the performance of the distributor.